package com.example.demo.service.task;

import com.example.demo.po.task.Task;
import com.example.demo.po.user.User;
import com.example.demo.vo.ResultVO;
import com.example.demo.vo.report.ReportCoNumVO;
import com.example.demo.vo.report.ReportSimNumVO;
import com.example.demo.vo.task.TaskDocVO;
import com.example.demo.vo.task.TaskSimpleVO;
import com.example.demo.vo.task.TaskVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface TaskService {

    //获取所有任务的简易信息
    ResultVO<List<TaskSimpleVO>> getValidTaskSimple(int pageNum);

    ResultVO<List<TaskSimpleVO>> getAllTaskSimple(int pageNum);

    ResultVO<TaskVO> getTaskByTaskId(int tid);

    List<TaskVO> getAllValidTaskByUser(String username);

    ResultVO<List<TaskSimpleVO>> getTaskSimpleByWorker(String username,int pageNum);

    ResultVO<List<TaskSimpleVO>> getTaskSimpleByEmployer(String username,int pageNum);

    ResultVO<TaskDocVO> uploadDoc(MultipartFile doc);

    ResultVO<TaskVO> uploadTask(TaskVO taskVO);

    void downloadFile(String originName, String newName, HttpServletResponse response);

    Task getTaskById(int tid);

    void updateCurrentWorkerById(int tid);

    ResultVO<List<ReportCoNumVO>> getAllCoreportNumByTid(int tid);

    ResultVO<List<ReportSimNumVO>> getAllSimilarityNumByTid(int tid,int min,int max);

    int getDifficultyByTid(int tid);

    List<User> recommendByDiversity(int tid);

    List<User> recommendByExp(int tid);

    List<User> recommendByRel(int tid);

    List<User> recommendAltogether(int tid);

    List<User> recommendAll(int tid);
}
